package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import estacion.dominio.Cliente;
import estacion.dominio.Persona;

public class FPCliente {

			
		public static void insertCliente(Cliente clien) throws Exception {
			String SQL="Insert into persona (DNI, nombre,apellido1, apellido2, contrasena, num_cuenta_corriente, rol, email) values('"+clien.getDNI()+"','"+clien.getNombre()+"','"+clien.getApellido1()+"','"+clien.getApellido2()+"','"+clien.getContrasena()+"',"+clien.getNum_cuenta_corriente()+",'Cliente','"+clien.getEmail()+"')";
			Conexion bd=null;
			Exception ex=null;
			PreparedStatement p=null;
			try {
				bd=Gestor_bbdd.get().getBD();
				p=bd.prepareStatement(SQL);
				p.executeUpdate();
			}
			catch (Exception e) {
				ex=e;
			}
			finally {
				bd.close();
				if (ex!=null)
					throw ex;
			}
		}

		//Elmina una Persona dado el dni
		public static void deleteCliente(String dni) throws Exception {
			String SQL="Delete from persona where DNI=? and rol='Cliente'";
			Conexion bd=null;
			Exception ex=null;
			PreparedStatement p=null;
			try {
				bd=Gestor_bbdd.get().getBD();
				p=bd.prepareStatement(SQL);
				p.setString(1, dni);
				p.executeUpdate();
			}
			catch (Exception e) {
				ex=e;
			}
			finally {
				bd.close();
				if (ex!=null)
					throw ex;
			}	
		}
		
		//Te devuelve todas las personas que existen
		public static Cliente consultCliente(String dni) throws Exception {
			Cliente clien=null;
			String SQL="Select * from persona where DNI='"+dni+"' and rol='Cliente'";
			
			Conexion bd=null;
			Exception ex=null;
			PreparedStatement p=null;
			try {
				bd=Gestor_bbdd.get().getBD();
				p=bd.prepareStatement(SQL);
				ResultSet r=p.executeQuery();
				while (r.next()) {
					clien=new Cliente();
					clien.setDNI(r.getString("DNI"));
					clien.setNombre(r.getString("nombre"));
					clien.setApellido1(r.getString("apellido1"));
					clien.setApellido2(r.getString("apellido2"));
					clien.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
					clien.setContrasena(r.getString("contrasena"));
					clien.setEmail(r.getString("email"));
					clien.setRol(r.getString("rol"));
				}			
			}
			catch (Exception e) {
				ex=e;
			}
			finally {
				bd.close();
				if (ex!=null)
					throw ex;
			}
			return clien;
		}
		
		
		public static void modificarCliente(Cliente clien, String dni) throws Exception{
			
			String SQL="UPDATE persona SET nombre='"+clien.getNombre()+"', contrasena='"+clien.getContrasena()+"' ,apellido1='"+clien.getApellido1()+"'" +
					",apellido2='"+clien.getApellido2()+"', num_cuenta_corriente="+clien.getNum_cuenta_corriente()+", email='"+clien.getEmail()+"' where DNI='"+dni+"' and rol='Cliente'";
			Conexion bd=null;
			Exception ex=null;
			PreparedStatement update=null;
			try {
				bd=Gestor_bbdd.get().getBD();
				update=bd.prepareStatement(SQL);
				update.executeUpdate();
			}
			catch (Exception e) {
				ex=e;
			}
			finally {
				bd.close();
				if (ex!=null)
					throw ex;
			}
		}
	
	public static Vector<Persona> getClientes() throws Exception {
		Vector<Persona> result=new Vector<Persona>();
		String SQL="Select * from persona where rol='Cliente'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Cliente clien=new Cliente();
				clien=new Cliente();
				clien.setDNI(r.getString("DNI"));
				clien.setNombre(r.getString("nombre"));
				clien.setApellido1(r.getString("apellido1"));
				clien.setApellido2(r.getString("apellido2"));
				clien.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
				clien.setContrasena(r.getString("contrasena"));
				clien.setEmail(r.getString("email"));
				clien.setRol(r.getString("rol"));
				result.add(clien);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
	
	/*public static Persona consultPersona(String dni) throws Exception {
		Persona clien=null;
		String SQL="Select * from persona where DNI='"+dni+"'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				clien=new Cliente();
				clien.setDNI(r.getString("DNI"));
				clien.setNombre(r.getString("nombre"));
				clien.setApellido1(r.getString("apellido1"));
				clien.setApellido2(r.getString("apellido2"));
				clien.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
				clien.setContrasena(r.getString("contrasena"));
				clien.setEmail(r.getString("email"));
				clien.setRol(r.getString("rol"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return clien;
	}*/
	
}
